extends BaseObject
class_name 天赋数据类

 # 基本属性
var id: int
var 名字:String
var 说明:String
var 品质:int # grade
var 初始点数:int
var 效果数据:Dictionary
var 激活条件=null
var 独有: bool
var 替换数据=null
var 排除ids:Array[int]
var 已激活:bool

func 初始化数据(data:Dictionary):
	if data.has("id"):
		id=int(data.id)
	if data.has("name"):
		名字=data.name
	if data.has("description"):
		说明=str(data.description)
	if data.has("grade"):
		品质=data.grade
	if data.has("status"):
		初始点数=data.status
	if data.has("effect"):
		效果数据=data.effect
	if data.has("condition"):
		激活条件=data.condition
	if data.has("exclusive"):
		独有=bool(data.exclusive)
	if data.has("replacement"):
		替换数据={}
		var replacement:Dictionary=data.replacement
		var 数据:Array=[]
		if replacement.has("talent"):
			替换数据.类型="天赋"
			数据=data.replacement.talent
		elif replacement.has("grade"):
			替换数据.类型="品质"
			数据=data.replacement.grade
		替换数据.数据=GameFactory.解析权重(数据)
		
	if data.has("exclude"):
		for _id in data.exclude:
			排除ids.append(int(_id))
	
func 兼容(other:天赋数据类) -> bool:
	return not 排除ids.has(other.id) and (not other.排除ids.has(id))

func 天赋可激活():
	if not 已激活 and (激活条件==null or GameCode.执行语句(激活条件)):
		return true
	return false
	
func 天赋激活():
	if 天赋可激活():
		GameCode.属性生效(效果数据)
		已激活=true
		
func 兼容天赋集(天赋集:Array):
	for 天赋 in 天赋集:
		if not 兼容(天赋):
			return false
	return true
